package com.wl.cloud.system.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wl.cloud.core.mybatis.CustomBaseMapper;
import com.wl.cloud.system.domain.SysUser;
import com.wl.cloud.system.support.dto.query.SysUserQueryDTO;
import com.wl.cloud.system.support.vo.SysUserVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import javax.validation.constraints.NotBlank;

/**
 * @author: wanglin
 * @date: 2023-09-13 周三
 * @Version: 1.0
 * @Description:
 */
@Mapper
public interface SysUserMapper extends CustomBaseMapper<SysUser> {

    /**
     * 根据条件分页查询已配用户角色列表
     *
     * @param page
     * @param queryDto
     * @return
     */
    IPage<SysUserVO> selectAllocatedList(IPage<SysUserVO> page, @Param("queryDto") SysUserQueryDTO queryDto);

    /**
     * 根据条件分页查询未分配用户角色列表
     *
     * @param page
     * @param queryDto
     * @return
     */
    IPage<SysUserVO> selectUnallocatedList(IPage<SysUserVO> page, @Param("queryDto") SysUserQueryDTO queryDto);

    /**
     * 根据账号userId查询用户
     *
     * @param userId
     * @return
     */
    SysUser selectByUserId(@Param("userId") @NotBlank String userId);

    /**
     * 根据账号userId查询用户
     *
     * @param userId
     * @return
     */
    SysUserVO selectVoByUserId(@Param("userId") @NotBlank String userId);

    /**
     * 根据userId查询用户
     *
     * @param userId
     * @return
     */
    SysUserVO selectUserAndRoleByUserId(@Param("userId") String userId);

    /**
     * 根据id查询用户
     *
     * @param id
     * @return
     */
    SysUserVO selectUserAndRoleById(@Param("id") String id);

    /**
     * 根据条件分页查询已配用户角色列表
     *
     * @param page
     * @param queryDto
     * @return
     */
    IPage<SysUserVO> selectDataPage(IPage<SysUserVO> page, @Param("queryDto") SysUserQueryDTO queryDto);
}
